<?php

/**
 * 判断传值是否包含emoji
 * @modify trainyao 2016-04-15 创建
 * @param  mixin   $value     传入值
 * @return boolean              是否包含emoji
 */
function noContainEmoji($value) {
    $length = mb_strlen($value, 'utf-8');
    $notContainEmoji = true;

    for ($i=0; $i < $length; $i++) {
        $_tmpStr = mb_substr($value , $i, 1, 'utf-8');
        if (strlen($_tmpStr) >= 4) {
            $notContainEmoji = false;
            break;
        }
    }

    return $notContainEmoji;
}

/**
 * 校验国际手机号格式
 * @modify trainyao 2016-03-02 创建
 * @param  string   $mobile    国际手机号
 * @param  string   $areaCode  手机区号
 * @return boolean              校验结果
 */
function checkGlobalMobile($mobile, $areaCode) {
    
    if ($areaCode == 86) {
        return preg_match("/^1\d{10}$/", $mobile) ? true : false;
    } else {
        return preg_match("/^\d{1,11}$/", $mobile) ? true : false;
    }
    /*include 'validate.data.area.php';

    $regex = $areaCodeData[substr($areaCode, 0, 1)];
    if (empty($regex) || !isset($regex[$areaCode])) {
        return false;
    }

    $regex = $regex[$areaCode];

    $match = false;
    if (is_array($regex)) {
        foreach ($regex as $index => $regexItem) {
            if (preg_match('/^' . $regexItem . '$/x', $mobile)) {
                $match = true;
                break;
            }
        }
    } else {
        $match = preg_match('/^' . $regex . '$/x', $mobile) ? true : false;
    }

    return $match;*/
}

/**
 * 区号是否合法校验方法
 * @modify trainyao 2016-03-01 创建
 * @param  string   $value     区号
 * @return boolean             结果
 */
function checkAreaCode($value) {
    $areaCode = array(61, 55, 359, 1, 86, 852, 886, 56, 420, 9714, 33, 49, 30, 36, 39, 98, 972, 91, 82, 60, 52, 31, 64, 351, 63, 40, 7, 966, 65, 34, 66, 90, 44, 1, 855, 84);

    return in_array($value, $areaCode);
}

/*
  fun:验证时间开始时间和结束时间
  $s<=$e true
 */
function checkEndTime($s, $e) {
    $dif = strtotime($s) - strtotime($e);
    if ($dif > 0) {
        return false;
    }
    return true;
}

/**
 * fun:验证1-3位的正整数
 */
function checkRoomReserved($i) {
    return preg_match("/^\d{1,3}$/i", $i) ? true : false;
}

/**
 * fun:验证字符串是否合法
 * 默认非法字符有 = ' "
 * 可通过参数加入 参数需是正则形式
 */
function checkLegalChar($char, $add) {
    return preg_match('/[\'"=' . $add . ']/i', $char) ? false : true;
}

/**
 * 判断该时间戳是否超过5分钟以前
 * @modify trainyao 2015-09-30 补充类型处理,可以处理Ymdhis/timestamp类型
 */
function isOverMinute($time, $m = 5) {
    if(!is_numeric($time)) {
        $time = strtotime($time);
    }

    return $time + $m * 60 < time();
}

/**
 * 判断字符串是否为合法的json数据
 * @param  string  $input 
 * @return boolean
 */
function isJson($input){
    json_decode($input);
    return (json_last_error() == JSON_ERROR_NONE);
}

/**
 * 校验数字是否在范围内
 * @modify trainyao 2016-04-28 创建
 * @param  integer   $value     待校验数据
 * @param  integer   $from      范围开始
 * @param  integer   $to        范围结束
 * @return boolean              在范围内返回true,否则返回false
 */
function checkNumberBetween($value, $from, $to) {
    return ($from <= $value && $value <= $to) ? true : false;
}

/**
 * 校验数字是否在范围内
 * @modify zhangzhen 2017-06-30 创建
 * @param  integer $value 待校验数据
 * @param  integer $start 范围开始
 * @param float|int $end 范围结束
 * @return float|int
 */
function keepNumberInRange($value, $start = 0, $end = 999999.99) {
    if ($value < $start) {
        return $start;
    } elseif ($value > $end) {
        return $end;
    } else {
        return $value;
    }
}

function isGtZero($value) {
    return $value > 0;
}